#!/bin/bash

# 定义要处理的压缩文件扩展名
extensions=(".zip" ".tar.gz" ".tar.bz2" ".tar.xz" ".rar" ".7z")

# 遍历当前目录及其子目录中的所有文件
find . -type f -print0 | while IFS= read -r -d $'\0' file; do
    # 检查文件是否是压缩文件
    for ext in "${extensions[@]}"; do
        if [[ "$file" == *"$ext" ]]; then
            # 获取文件的目录路径
            dir=$(dirname "$file")
            # 获取文件名（不包含扩展名）
            filename=$(basename "$file" "$ext")
            # 创建一个与压缩文件同名的文件夹
            mkdir -p "$dir/$filename"
            # 解压文件到对应的文件夹
            case "$ext" in
                ".zip")
                    unzip -q "$file" -d "$dir/$filename"
                    ;;
                ".tar.gz")
                    tar -xzf "$file" -C "$dir/$filename"
                    ;;
                ".tar.bz2")
                    tar -xjf "$file" -C "$dir/$filename"
                    ;;
                ".tar.xz")
                    tar -xJf "$file" -C "$dir/$filename"
                    ;;
                ".rar")
                    unrar x -inul "$file" "$dir/$filename"
                    ;;
                ".7z")
                    7z x -y -o"$dir/$filename" "$file" >/dev/null
                    ;;
            esac
            # 解压完成后，检查是否成功
            if [ $? -eq 0 ]; then
                echo "成功解压: $file 到 $dir/$filename"
            else
                echo "解压失败: $file"
            fi
            break
        fi
    done
done
